/*
 * Stopwatch.java
 *
 *  created: 8.4.2011
 *  charset: UTF-8
 *  license: MIT (X11) (See LICENSE file for full license)
 */

package cz.mp.util;

/**
 * Třída {@code Stopwatch} představuje jednoduché stopky pro měření času.
 *
 * @author Martin Pokorný
 * @version 0.1
 */
public class Stopwatch {

    /** Výchozí čas. */
    private long t0 = -1;
    private long lastTime = -1;

    /** Vytvoří nové stopky. */
    public Stopwatch() {
    }

    /** Vynuluje stopky, připraví k použití. */
    public void start() {
        t0 = System.currentTimeMillis();
    }

    /**
     *
     * @return  změřený čas od startu v ms
     */
    public long stop() {
        if (t0 == -1) {
            throw new IllegalStateException("je treba spustit start");
        }
        lastTime = System.currentTimeMillis() - t0;
        return lastTime;
    }

    /**
     *
     * @return  čas v milisekundách
     */
    public long getTimeMs() {
        if (lastTime == -1) {
            throw new IllegalStateException("je treba spustit start a stop");
        }
        return lastTime;
    }

    /**
     *
     * @return  čas v sekundách
     */
    public double getTimeSec() {
        if (lastTime == -1) {
            throw new IllegalStateException("je treba spustit start a stop");
        }
        return (double)lastTime/1000;
    }

}   // Stopwatch
